﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	printf("&arr[0] = %p\n",&arr[0]);
//	printf(" arr    = %p\n", arr);
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("%d\n", sizeof(arr));
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("&arr[0] = %p\n", &arr[0]);
//	printf(" arr    = %p\n", arr);
//	printf(" &arr   = %p\n", &arr);
//	return 0;
//}



//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	printf("&arr[0]   = %p\n", &arr[0]);
//	printf("&arr[0]+1 = %p\n", &arr[0]+1);
//	printf(" arr      = %p\n", arr);
//	printf(" arr+1    = %p\n", arr + 1);
//	printf(" &arr     = %p\n", &arr);
//	printf(" &arr+1   = %p\n", &arr + 1);
//	return 0;
//}



//#include  <stdio.h>
//
//int main()
//{
//	int arr[10] = {0};
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr;
//	
//	int  i = 0;
//	//输入数据
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//	    //scanf("%d", arr+i);//也可以这样写
//	}
//	//打印数组
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ",p[i]);
//	}
//	return 0;
//}


//#include  <stdio.h>
//void Test(int arr[])
//{
//	int sz2 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz2 = %d\n", sz2);  //在函数内部计算数组元素的个数
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
//	int sz1 = sizeof(arr) / sizeof(arr[0]);
//	printf("sz1 = %d\n",sz1);//计算数组元素的个数
//	Test(arr);//在函数内计算数组元素的个数
//
//	return 0;
//}



//#include <stdio.h>
//void test(int arr[])//参数写成数组形式，本质上还是指针
//{
//	printf("%d\n", sizeof(arr));
//}
//
// void test2(int* arr)//参数写成指针形式
//{
//	printf("%d\n", sizeof(arr));//计算⼀个指针变量的⼤⼩
//}
//
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	test(arr);
//	test(arr);
//	return 0;
//}


//二级指针

//#include <stdio.h>
//int main()
//{
//	int a = 10;
//	int* pa = &a;      //pa是一级指针变量
//
//	int** ppa = &pa; //ppa就是二级指针变量
//
//	printf("%d\n", **ppa);
//
//	** ppa = 200;
//	printf("%d\n",a);//200
//
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int c = 30;
//
//	int* arr[3] = {&a,&b,&c};
//	//             0  1  2
//
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		printf("%d ",*(arr[i]));
//	}
//	return 0;
//}


//#include <stdio.h>
//int main()
//{
//	int arr1[5] = { 1,2,3,4,5 };
//	int arr2[5] = { 2,3,4,5,6 };
//	int arr3[5] = { 3,4,5,6,7 };
//
//	int* arr[5] = { arr1,arr2 ,arr3 };
//
//	int i = 0;
//	for (i=0;i<3;i++)
//	{
//		int j = 0;
//		for (j=0;j<5;j++)
//		{
//			printf("%d ",*(arr[i] + j));
//		}
//		printf("\n");
//	}
//
//
//	return 0;
//}



#include <stdio.h>
int main()
{
	//int arr[] = { 5,4,3,2,1 };
	int arr[] = { 1,2,3,4,5 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	int count = 0;
	for (i = 0; i < sz-1 ; i++)
	{
		int step = 0;
		
		int j = 0;
		for (j=0;j<sz-1-i;j++)
		{
            
			if (arr[j] > arr[j + 1])
			{	
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
				step = 1;
			}
			count++;
			
		}
		if (!step)
		{
			break;
		}

	}

	for (i = 0;i<sz;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
	printf("比较次数为：%d",count);
	return 0;
}